<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 1. ES5 中的对象方法
        // 1.1 Object.create()
        // 创建对象，括号中必须给参数或者null，指定的参数对象作为新对象的原型

        // 1.2 Obejct.defineProperty()  定义对象的属性
        // var obj = {
        //     // 创建伪属性的方式
        //     _a: 0,
        //     get a() {
        //         return this._a;
        //     },
        //     set a(val) {
        //         this._a = val;
        //     }
        // };
        // obj.uname = 'zhangsan';
        // obj['age'] = 30;

        var obj = {};
        // 参数1：指定要添加属性的对象
        // 参数2: 要添加的属性 - 字符串
        // 参数3: 关于此属性的配置说明 - 对象
        Object.defineProperty(obj, 'a', {
            // value: 999,          // 指定的属性值
            // writable: true,      // 可以修改，可以改写，默认为false
            enumerable: true,    // 可以被枚举，可以遍历
            // configurable: true,  // 可以被删除

            // -------要写getter和setter必须得去掉value和writable属性----------------

            // getter 不需要取名字
            get() {
                return this._a;
            },
            set(val) {
                this._a = val;
            }
        })
        obj.a = '古力娜扎';
        // delete obj.a;
        console.log(obj);

        for (var key in obj) {
            console.log(key);
        }

    </script>
</body>

</html>